Household Survey Analysis

Preliminary Results

Published

May 19, 2025

This document presents an initial analysis of the household survey responses from invited residents living within three areas of Charlottesville and Albemarle County. The survey itself was constructed using Qualtrics and ESRI Survey 123—participants were recruited using mailed postcards and via email. The household survey response rate was lower than expected, despite compensation in the form of a $35 gift card as a financial incentive and we received 62 responses from 462 invitations for a response rate of 13.4% percent. Note: the effective response rate still needs to be calculated by taking into account the number of postcards that were “returned to sender” or marked as undeliverable by the US Postal Service.



However, only 54 of those 62 respondents completed the survey questionnaire to a degree that is useful for analysis.


Who Participated?

Although we did not collect any demographic information, we do know where the respondents live who provided a survey access code. The interactive map below shows the location of all respondents and of those who fully completed the survey questionnaire.

knitr::kable(
data_1 %>%
  group_by(Neighborhood) %>%
  count(), col.names = c("Neighborhood", "Responses")
) 
Neighborhood Responses
10th and Page Neighborhood 14
Fashion Square Mall and Branchlands Area 14
Four Seasons Apartments and Townwood Mobile Home Park 24
Michie Drive Subsidized Housing 2

Interactive Map Showing Responses

tmap_mode("view")
ℹ tmap mode set to "view".
# tmap_options(check.and.fix = T)


tm_shape(sites_sf, name = "Study Areas") +
  tm_polygons(fill = "yellow", col = "yellow2", lwd = 2,
              fill_alpha = 0.25,
              popup.vars = c("Name: " = "Descriptio")) +
  tm_title(text = "Survey Responses by Study Area") +
tm_shape(already_responded_deets_sf, name = "Responses") +
  tm_dots(fill = "Completed_Survey", fill_alpha = 0.75, size = 0.75, shape = 21,
          popup.vars = c("Name: " = "RECIPIENT", "Address: " = "FullAddress",
                         "Phone? " = "HasPhone", "Email? " = "HasEmail"), 
          fill.scale = tm_scale_categorical(n = 2, values = c("green4", "red")),
          fill.legend = tm_legend(title = "Completed Survey?")) +
  tm_layout(frame = F) 


Of the 54 usable responses, 27 participants indicated that they would like an invitation to the follow-up focus group meeting:

  • 10th and Page Neighborhood → 6
  • Fashion Square Mall and Branchlands Area → 9
  • Four Seasons Apartments and Townwood Mobile Home Park → 10
  • Michie Drive Subsidized Housing → 2


Perceptions of NbS and Barriers to Implementation

The first few questions ask about respondents’ familiarity with NbS concepts and terminology:

Are you familiar with any of these terms: nature-based solution (NbS), green infrastructure, best management practice (BMPs), or Low Impact Development (LID)?

  • Nature-based Solutions (NbS) are practices that weave natural features or processes into the built environment to promote adaptation and resilience.
  • Green infrastructure refers to measures that use plant or soil systems, permeable pavement or other permeable surfaces or substrates, stormwater harvest and reuse, or landscaping to store, infiltrate, or evapotranspirate stormwater and reduce flows to sewer systems or to surface waters.
  • Best management practices are techniques or methods that aim to manage the quantity and improve the quality of stormwater runoff in a cost-effective manner.
  • Low Impact Development (LID) refers to systems and practices that use or mimic natural processes that result in the infiltration, evapotranspiration, or use of stormwater to protect water quality and associated aquatic habitat.

Are you a homeowner, water resources professional, or industrial/commercial landowner?

Would it be possible for you to convert impervious/paved surfaces to grass, gardens, or trees on your property?

What are the major barriers that would prevent you from implementing NbS on your property, if any?


# Are you familiar with any of these terms...

familiar_nbs <- recoded_data %>%
  dplyr::select(Neighborhood, Familiar_Terms) %>%
  group_by(Neighborhood) %>%
  tabyl(Neighborhood, Familiar_Terms) %>%
  `colnames<-`(c("Neighborhood", "No", "Yes")) %>%
  ggplot() +
  geom_bar(aes(y = Yes, x = Neighborhood), stat = "identity", fill = "green4", alpha = 0.75) + 
  labs(title = "Familiar With NbS Terminology", y = "", x = "") +
  scale_x_discrete(labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) +
  geom_text(aes(label = Yes, x = Neighborhood, y = Yes), vjust = 1.8, color = "white", size = 7)


not_familiar_nbs <- recoded_data %>%
  dplyr::select(Neighborhood, Familiar_Terms) %>%
  group_by(Neighborhood) %>%
  tabyl(Neighborhood, Familiar_Terms) %>%
  `colnames<-`(c("Neighborhood", "No", "Yes")) %>%
  ggplot() +
  geom_bar(aes(y = No, x = Neighborhood), stat = "identity", fill = "#E57200", alpha = 0.75) + 
  labs(title = "Not Familiar With NbS Terminology", y = "", x = "") +
  scale_x_discrete(labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) +
  geom_text(aes(label = No, x = Neighborhood, y = No), vjust = 1.8, color = "white", size = 7)

ggarrange(familiar_nbs, not_familiar_nbs)

# Are you a homeowner, water resources professional, or industrial/commercial landowner?

kable(
  recoded_data %>%
    group_by(Role) %>%
    count() %>%
    as.data.frame() %>%
    `rownames<-`(c("None of These", "Homeowner", "Water Resources Professional")),
  col.names = c("Role", "Responses")
)
Role Responses
None of These 0 25
Homeowner 1 28
Water Resources Professional 2 1
recoded_data %>%
  dplyr::select(Neighborhood, Role) %>%
  group_by(Neighborhood) %>%
  tabyl(Neighborhood, Role) %>%
  `colnames<-`(c("Neighborhood", "None of These", "Homeowner", "Water Resources Professional")) %>%
  ggplot() +
  geom_bar(aes(y = Homeowner, x = Neighborhood), stat = "identity", fill = "dodgerblue", alpha = 0.75) + 
  labs(title = "I Am A Homeowner", y = "", x = "") +
  scale_x_discrete(labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) +
  geom_text(aes(label = Homeowner, x = Neighborhood, y = Homeowner), vjust = 1.8, color = "white", size = 7)

#  Would it be possible for you to convert impervious/paved surfaces to grass, gardens, or trees on your property? 

# table(recoded_data$Convert_Impervious)

ggplot(data = recoded_data) +
  geom_bar(aes(x = as_factor(Convert_Impervious)), stat = "count", fill = "yellow3", alpha = 0.75) + 
  labs(title = "Is It Possible For You to Convert Impervious Surfaces to Grass, \n Gardens, or Trees on Your Property?", y = "", x = "") +
  scale_x_discrete(labels = c("Other", "I am not sure", "Yes, but it would be difficult", "Yes, it would be possible")) +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) +
  geom_text(aes(label = after_stat(count), x = as_factor(Convert_Impervious)), vjust = 1.8, color = "white", size = 7, stat = "count")

# What are the major barriers that would prevent you from implementing NbS on your property, if any?

barriers_in_order <- c("Cost_", "Uncertain_Benefits_", "Maintenance_and_Upkeep_", "Unanticipated_Impacts_", "Not_Enough_Space_", "other")
  
NBS_Barriers_Top_3 %>%
  tabyl() %>%
  `colnames<-`(c("Barrier", "Number", "Percent")) %>%
  ggplot() +
  geom_bar(aes(y = Number, x = factor(Barrier, barriers_in_order)), stat="identity", fill = "#E57200", alpha = 0.85) + 
  scale_x_discrete(labels = c("Cost", "Uncertain Benefits", "Maintenance and Upkeep", "Unanticipated Impacts", "Not Enough Space", "Other"),
                   name = "Barrier") +
  labs(title = "Frequency of Barriers in Top 3 Selections") +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) + 
    geom_text(aes(label = Number, x = Barrier, y = Number), vjust = 1.8, color = "white", size = 7)

to_drop <- c("N/a", "N/A", "n/a")

barriers_other <- data_1 %>%
  filter(is.na(`Other - What are the major barriers that would prevent you from implementing NbS on your property, if any?`) == FALSE) %>%
  dplyr::select(`Other - What are the major barriers that would prevent you from implementing NbS on your property, if any?`, Neighborhood) %>%
  filter(! `Other - What are the major barriers that would prevent you from implementing NbS on your property, if any?` %in% to_drop)




kbl(
barriers_other %>%
  arrange(Neighborhood)
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F)
Other - What are the major barriers that would prevent you from implementing NbS on your property, if any? Neighborhood
I don't know what this is 10th and Page Neighborhood
Not owner 10th and Page Neighborhood
not a home owner 10th and Page Neighborhood
An HOA that actively thwarts all positive environmental efforts. For example, no one is permitted any solar panels, and pollinator gardens are cited for being too messy. Fashion Square Mall and Branchlands Area
HOA approval (lack of) Fashion Square Mall and Branchlands Area
I own a townhouse but not the land it sits on. My native plants were cut back last fall without my permission. The two young oak trees were left alone. Fashion Square Mall and Branchlands Area
I live in a property owner's association so the Board and possible a majority of owners would have to approve Fashion Square Mall and Branchlands Area
Do not own property Fashion Square Mall and Branchlands Area
I live in a condo Fashion Square Mall and Branchlands Area
My home is a condo townhouse so the HOA owns all the exterior pavement trees etc so it would take HOA to do Nbs for the whole neighborhood Fashion Square Mall and Branchlands Area
The HOA has denied prior plan that my sister (the homeowner) and I submitted that included NbS Four Seasons Apartments and Townwood Mobile Home Park
HOA restrictions Four Seasons Apartments and Townwood Mobile Home Park
Potential HOA restrictions Four Seasons Apartments and Townwood Mobile Home Park
Lease agreement Four Seasons Apartments and Townwood Mobile Home Park
Home Association Rules and Guidelines Four Seasons Apartments and Townwood Mobile Home Park
I do not own any property Michie Drive Subsidized Housing


The overwhelming majority of respondents identified as homeowners (28 of 54) and the percentage of respondents who were familiar with NbS terminology lived in the Fashion Square Mall and Branchlands Area (i.e., 12 of 14). Familiarity with NbS terminology was lowest among 10th and Page respondents (i.e., 9 of 14). The implication is that 26 of the respondents are renters.

A majority of respondents were unsure or doubtful (33 of 54) of their ability to convert existing impervious surfaces on their property with cost and other factors (see the table) like HOA restrictions most frequently cited.


NbS Priorities and Community Concerns

Two of the survey questions ask respondents to rank the benefits associated with a list of NbS interventions that this project considers and to identify related environmental impacts that are of most concern.

Please rank each of the benefits associated with NbS listed below in terms of their importance to you on a scale from 1 to 8 with 1 indicating the most important:

  • Air quality improvements
  • Enhanced landscape aesthetics
  • Environmental education opportunities
  • Increased habitat for native plants and animals
  • Recreational opportunities
  • Stormwater runoff and flooding mitigation
  • Urban heat island attenuation
  • Water supply

Which of the following would you say is of greatest concern to your community?

  • Air pollution
  • Flooding/stormwater management
  • Urban heat
  • Water quality

#  Please rank each of the benefits associated with NbS listed below in terms of their importance

NBS_Import_Top_3 %>%
  tabyl() %>%
  `colnames<-`(c("Benefit", "Number", "Percent")) %>%
  ggplot() +
  geom_bar(aes(y = Number, x = Benefit), stat="identity", fill = "dodgerblue", alpha = 0.75) + 
  scale_x_discrete(labels = c("Air Quality \n Improvements", "Enhanced Landscape \n Aesthetics", 
                              "Environmental Education \n Opportunities", "Increased Habitat \n for Native Plants \n and Animals", 
                              "Recreational \n Opportunities", "Stormwater Runoff \n and Flooding Mitigation",
                              "Urban Heat \n Island Attenuation", "Water Supply" ), name = "Benefit") +
  labs(title = "Frequency of Benefits in Top 3 Selections") +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) +
    geom_text(aes(label = Number, x = Benefit, y = Number), vjust = 1.8, color = "white", size = 7)

#  Which of the following would you say is of greatest concern to your community

NBS_Greatest_Concern %>%
  tabyl() %>%
  `colnames<-`(c("Concern", "Number", "Percent")) %>%
  ggplot() +
  geom_bar(aes(y = Number, x = Concern), stat="identity", fill = "green4", alpha = 0.75) + 
  scale_x_discrete(labels = c("Air Pollution", "Flooding/Stormwater \n Management", 
                              "Urban Heat", "Water Quality" ), name = "Concern") +
  labs(title = "Frequency of Greatest Concern") +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) +
  geom_text(aes(label = Number, x = Concern, y = Number), vjust = 1.8, color = "white", size = 7)


Stormwater runoff and flood mitigation benefits were most frequently cited NbS benefits in terms of their importance. Similarly, most respondents identified flood and stormwater management followed y water quality as the greatest concern where they live.


Perceptions of Individual NbS Interventions

There are several sets of questions designed to capture respondent perceptions of the five NbS interventions this project has considered—rain gardens, green roofs, green spaces (e.g., parks and fields), stormwater retention ponds, and tree planting. For each of these interventions there is a Likert scale question that asks about that intervention’s capacity to enhance local water supplies, recreational opportunities, habitat for native plants/animals, to beautify the landscape, and to help prevent flooding.

For each of these responses a higher represents a more positive perception of that NbS and its capacity to deliver the benefit in question. These questions are all coded 1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree and an example suite of these questions is given below:

  • Do you agree with the statement: “Rain gardens can enhance local water supplies.”?
  • Do you agree with the statement: “Rain gardens can enhance recreational/hobby opportunities.”?
  • Do you agree with the statement: “Rain gardens can increase habitat for native plants and animals.”?
  • Do you agree with the statement: “Rain gardens can enhance the beautification of the landscape.”?
  • Do you agree with the statement: “Rain gardens can help control stormwater runoff and can help prevent flooding.”?


In addition to selected descriptive statistics, we use non-parametric Kruskal-Wallis tests to explore potential differences in outcomes of interest. Note that the null hypothesis for the Kruskal-Wallis test is that the median values of the variable of interest are the same across the groups being compared—this test is useful when the data are not normally distributed or when they are ordinal (e.g., Likert scales).

Rain Gardens

kbl(
recoded_data %>% 
  group_by(Neighborhood) %>%
  dplyr::select(Rain_Garden_Water_Supplies, Rain_Garden_Recreation, Rain_Garden_Habitat,
                Rain_Garden_Beautify, Rain_Garden_Prevent_Flooding, Neighborhood) %>%
  `colnames<-`(c("Rain_Garden_Water_Supplies", "Rain_Garden_Recreation", "Rain_Garden_Habitat",
                 "Rain_Garden_Beautify", "Rain_Garden_Prevent_Flooding", "Neighborhood")) %>%
  rstatix::get_summary_stats(show = c("min", "max", "mean", "sd")), 
  col.names = c("Neighborhood", "Question", "#", "Min", "Max", "Mean", "Std Dev"),
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F) 
Neighborhood Question # Min Max Mean Std Dev
10th and Page Neighborhood Rain_Garden_Water_Supplies 14 1 5 3.571 1.016
10th and Page Neighborhood Rain_Garden_Recreation 14 1 4 3.286 1.267
10th and Page Neighborhood Rain_Garden_Habitat 14 1 5 3.500 1.286
10th and Page Neighborhood Rain_Garden_Beautify 14 1 5 3.929 1.072
10th and Page Neighborhood Rain_Garden_Prevent_Flooding 14 2 5 3.571 1.016
Fashion Square Mall and Branchlands Area Rain_Garden_Water_Supplies 14 1 5 4.071 1.072
Fashion Square Mall and Branchlands Area Rain_Garden_Recreation 14 1 5 3.857 1.292
Fashion Square Mall and Branchlands Area Rain_Garden_Habitat 14 1 5 4.429 1.158
Fashion Square Mall and Branchlands Area Rain_Garden_Beautify 14 1 5 4.000 1.240
Fashion Square Mall and Branchlands Area Rain_Garden_Prevent_Flooding 14 1 5 4.214 1.122
Four Seasons Apartments and Townwood Mobile Home Park Rain_Garden_Water_Supplies 23 2 5 3.957 0.878
Four Seasons Apartments and Townwood Mobile Home Park Rain_Garden_Recreation 24 2 5 3.917 0.830
Four Seasons Apartments and Townwood Mobile Home Park Rain_Garden_Habitat 24 2 5 4.250 0.847
Four Seasons Apartments and Townwood Mobile Home Park Rain_Garden_Beautify 24 3 5 4.417 0.717
Four Seasons Apartments and Townwood Mobile Home Park Rain_Garden_Prevent_Flooding 24 3 5 4.000 0.780
Michie Drive Subsidized Housing Rain_Garden_Water_Supplies 2 3 5 4.000 1.414
Michie Drive Subsidized Housing Rain_Garden_Recreation 2 3 4 3.500 0.707
Michie Drive Subsidized Housing Rain_Garden_Habitat 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Rain_Garden_Beautify 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Rain_Garden_Prevent_Flooding 2 3 5 4.000 1.414
kruskal_test(data = recoded_data, formula = Rain_Garden_Water_Supplies ~ Neighborhood)
# A tibble: 1 × 6
  .y.                            n statistic    df     p method        
* <chr>                      <int>     <dbl> <int> <dbl> <chr>         
1 Rain_Garden_Water_Supplies    54      2.71     3 0.438 Kruskal-Wallis
wilcox_test(formula = Rain_Garden_Water_Supplies ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Rain_Garden_Wate… 10th … Fashi…    14    14      64   0.1   0.599 ns          
2 Rain_Garden_Wate… 10th … Four …    14    23     128   0.282 1     ns          
3 Rain_Garden_Wate… 10th … Michi…    14     2      11.5 0.737 1     ns          
4 Rain_Garden_Wate… Fashi… Four …    14    23     182   0.493 1     ns          
5 Rain_Garden_Wate… Fashi… Michi…    14     2      15   0.932 1     ns          
6 Rain_Garden_Wate… Four … Michi…    23     2      22.5 1     1     ns          
kruskal_test(data = recoded_data, formula = Rain_Garden_Recreation ~ Neighborhood)
# A tibble: 1 × 6
  .y.                        n statistic    df     p method        
* <chr>                  <int>     <dbl> <int> <dbl> <chr>         
1 Rain_Garden_Recreation    54      3.31     3 0.347 Kruskal-Wallis
wilcox_test(formula = Rain_Garden_Recreation ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Rain_Garden_Recr… 10th … Fashi…    14    14      64.5 0.091 0.547 ns          
2 Rain_Garden_Recr… 10th … Four …    14    24     129   0.199 0.995 ns          
3 Rain_Garden_Recr… 10th … Michi…    14     2      15.5 0.846 1     ns          
4 Rain_Garden_Recr… Fashi… Four …    14    24     181   0.687 1     ns          
5 Rain_Garden_Recr… Fashi… Michi…    14     2      19   0.448 1     ns          
6 Rain_Garden_Recr… Four … Michi…    24     2      31.5 0.47  1     ns          
kruskal_test(data = recoded_data, formula = Rain_Garden_Habitat ~ Neighborhood)
# A tibble: 1 × 6
  .y.                     n statistic    df      p method        
* <chr>               <int>     <dbl> <int>  <dbl> <chr>         
1 Rain_Garden_Habitat    54      7.80     3 0.0504 Kruskal-Wallis
wilcox_test(formula = Rain_Garden_Habitat ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Rain_Garden_Habi… 10th … Fashi…    14    14      45.5 0.011 0.064 ns          
2 Rain_Garden_Habi… 10th … Four …    14    24     108   0.054 0.268 ns          
3 Rain_Garden_Habi… 10th … Michi…    14     2       7   0.253 0.9   ns          
4 Rain_Garden_Habi… Fashi… Four …    14    24     204.  0.225 0.9   ns          
5 Rain_Garden_Habi… Fashi… Michi…    14     2      16   0.771 1     ns          
6 Rain_Garden_Habi… Four … Michi…    24     2      21   0.793 1     ns          
kruskal_test(data = recoded_data, formula = Rain_Garden_Beautify ~ Neighborhood)
# A tibble: 1 × 6
  .y.                      n statistic    df     p method        
* <chr>                <int>     <dbl> <int> <dbl> <chr>         
1 Rain_Garden_Beautify    54      2.52     3 0.472 Kruskal-Wallis
wilcox_test(formula = Rain_Garden_Beautify ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Rain_Garden_Beau… 10th … Fashi…    14    14      88   0.641  1    ns          
2 Rain_Garden_Beau… 10th … Four …    14    24     122   0.135  0.81 ns          
3 Rain_Garden_Beau… 10th … Michi…    14     2       9.5 0.49   1    ns          
4 Rain_Garden_Beau… Fashi… Four …    14    24     142.  0.389  1    ns          
5 Rain_Garden_Beau… Fashi… Michi…    14     2      11.5 0.733  1    ns          
6 Rain_Garden_Beau… Four … Michi…    24     2      23.5 1      1    ns          
kruskal_test(data = recoded_data, formula = Rain_Garden_Prevent_Flooding ~ Neighborhood)
# A tibble: 1 × 6
  .y.                              n statistic    df     p method        
* <chr>                        <int>     <dbl> <int> <dbl> <chr>         
1 Rain_Garden_Prevent_Flooding    54      4.25     3 0.235 Kruskal-Wallis
wilcox_test(formula = Rain_Garden_Prevent_Flooding ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Rain_Garden_Prev… 10th … Fashi…    14    14        59 0.064 0.384 ns          
2 Rain_Garden_Prev… 10th … Four …    14    24       127 0.197 0.985 ns          
3 Rain_Garden_Prev… 10th … Michi…    14     2        11 0.679 1     ns          
4 Rain_Garden_Prev… Fashi… Four …    14    24       207 0.214 0.985 ns          
5 Rain_Garden_Prev… Fashi… Michi…    14     2        16 0.796 1     ns          
6 Rain_Garden_Prev… Four … Michi…    24     2        24 1     1     ns          
recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Rain_Garden_Habitat, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Rain Garden Habitat Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)


There are no statistically significant differences in any of the questions related to perceived benefits of rain gardens across neighborhoods based on the Kruskal-Wallis and Wilcox tests.


Green Roofs

kbl(
recoded_data %>% 
  group_by(Neighborhood) %>%
  dplyr::select(Green_Roof_Water_Supplies, Green_Roof_Recreation, Green_Roof_Habitat,
                Green_Roof_Beautify, Green_Roof_Prevent_Flooding, Neighborhood) %>%
  `colnames<-`(c("Green_Roof_Water_Supplies", "Green_Roof_Recreation", "Green_Roof_Habitat",
                 "Green_Roof_Beautify", "Green_Roof_Prevent_Flooding", "Neighborhood")) %>%
  rstatix::get_summary_stats(show = c("min", "max", "mean", "sd")), 
  col.names = c("Neighborhood", "Question", "#", "Min", "Max", "Mean", "Std Dev"),
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F) 
Neighborhood Question # Min Max Mean Std Dev
10th and Page Neighborhood Green_Roof_Water_Supplies 14 3 5 3.643 0.745
10th and Page Neighborhood Green_Roof_Recreation 14 3 4 3.500 0.519
10th and Page Neighborhood Green_Roof_Habitat 14 1 5 3.500 0.941
10th and Page Neighborhood Green_Roof_Beautify 14 1 4 3.071 1.141
10th and Page Neighborhood Green_Roof_Prevent_Flooding 14 2 5 3.500 0.760
Fashion Square Mall and Branchlands Area Green_Roof_Water_Supplies 14 1 5 3.643 1.277
Fashion Square Mall and Branchlands Area Green_Roof_Recreation 14 1 5 3.429 1.158
Fashion Square Mall and Branchlands Area Green_Roof_Habitat 14 2 5 4.357 0.929
Fashion Square Mall and Branchlands Area Green_Roof_Beautify 14 2 5 3.929 0.997
Fashion Square Mall and Branchlands Area Green_Roof_Prevent_Flooding 14 3 5 4.214 0.802
Four Seasons Apartments and Townwood Mobile Home Park Green_Roof_Water_Supplies 24 2 5 3.333 0.816
Four Seasons Apartments and Townwood Mobile Home Park Green_Roof_Recreation 24 2 5 3.458 0.779
Four Seasons Apartments and Townwood Mobile Home Park Green_Roof_Habitat 24 3 5 4.125 0.741
Four Seasons Apartments and Townwood Mobile Home Park Green_Roof_Beautify 24 3 5 4.042 0.550
Four Seasons Apartments and Townwood Mobile Home Park Green_Roof_Prevent_Flooding 24 2 5 3.792 0.932
Michie Drive Subsidized Housing Green_Roof_Water_Supplies 2 3 3 3.000 0.000
Michie Drive Subsidized Housing Green_Roof_Recreation 2 3 4 3.500 0.707
Michie Drive Subsidized Housing Green_Roof_Habitat 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Green_Roof_Beautify 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Green_Roof_Prevent_Flooding 2 3 3 3.000 0.000
kruskal_test(data = recoded_data, formula = Green_Roof_Water_Supplies ~ Neighborhood)
# A tibble: 1 × 6
  .y.                           n statistic    df     p method        
* <chr>                     <int>     <dbl> <int> <dbl> <chr>         
1 Green_Roof_Water_Supplies    54      3.12     3 0.373 Kruskal-Wallis
wilcox_test(formula = Green_Roof_Water_Supplies ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Green_Roof_Water… 10th … Fashi…    14    14      89.5 0.7       1 ns          
2 Green_Roof_Water… 10th … Four …    14    24     206.  0.196     1 ns          
3 Green_Roof_Water… 10th … Michi…    14     2      21   0.246     1 ns          
4 Green_Roof_Water… Fashi… Four …    14    24     206   0.229     1 ns          
5 Green_Roof_Water… Fashi… Michi…    14     2      20   0.368     1 ns          
6 Green_Roof_Water… Four … Michi…    24     2      29   0.609     1 ns          
kruskal_test(data = recoded_data, formula = Green_Roof_Recreation ~ Neighborhood)
# A tibble: 1 × 6
  .y.                       n statistic    df     p method        
* <chr>                 <int>     <dbl> <int> <dbl> <chr>         
1 Green_Roof_Recreation    54    0.0967     3 0.992 Kruskal-Wallis
wilcox_test(formula = Green_Roof_Recreation ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Green_Roof_Recre… 10th … Fashi…    14    14      94.5 0.881     1 ns          
2 Green_Roof_Recre… 10th … Four …    14    24     175   0.828     1 ns          
3 Green_Roof_Recre… 10th … Michi…    14     2      14   1         1 ns          
4 Green_Roof_Recre… Fashi… Four …    14    24     176.  0.822     1 ns          
5 Green_Roof_Recre… Fashi… Michi…    14     2      14.5 1         1 ns          
6 Green_Roof_Recre… Four … Michi…    24     2      23   0.958     1 ns          
kruskal_test(data = recoded_data, formula = Green_Roof_Habitat ~ Neighborhood)
# A tibble: 1 × 6
  .y.                    n statistic    df      p method        
* <chr>              <int>     <dbl> <int>  <dbl> <chr>         
1 Green_Roof_Habitat    54      8.24     3 0.0412 Kruskal-Wallis
wilcox_test(formula = Green_Roof_Habitat ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Green_Roof_Habit… 10th … Fashi…    14    14      45.5 0.012 0.07  ns          
2 Green_Roof_Habit… 10th … Four …    14    24     106   0.045 0.226 ns          
3 Green_Roof_Habit… 10th … Michi…    14     2       5   0.142 0.568 ns          
4 Green_Roof_Habit… Fashi… Four …    14    24     204.  0.24  0.72  ns          
5 Green_Roof_Habit… Fashi… Michi…    14     2      14   1     1     ns          
6 Green_Roof_Habit… Four … Michi…    24     2      17.5 0.532 1     ns          
kruskal_test(data = recoded_data, formula = Green_Roof_Beautify ~ Neighborhood)
# A tibble: 1 × 6
  .y.                     n statistic    df     p method        
* <chr>               <int>     <dbl> <int> <dbl> <chr>         
1 Green_Roof_Beautify    54      9.10     3 0.028 Kruskal-Wallis
wilcox_test(formula = Green_Roof_Beautify ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Green_Roof_Beaut… 10th … Fashi…    14    14      59   0.065 0.324 ns          
2 Green_Roof_Beaut… 10th … Four …    14    24      85   0.004 0.023 *           
3 Green_Roof_Beaut… 10th … Michi…    14     2       3.5 0.088 0.353 ns          
4 Green_Roof_Beaut… Fashi… Four …    14    24     162   0.853 1     ns          
5 Green_Roof_Beaut… Fashi… Michi…    14     2       9.5 0.504 1     ns          
6 Green_Roof_Beaut… Four … Michi…    24     2      14.5 0.287 0.861 ns          
kruskal_test(data = recoded_data, formula = Green_Roof_Prevent_Flooding ~ Neighborhood)
# A tibble: 1 × 6
  .y.                             n statistic    df     p method        
* <chr>                       <int>     <dbl> <int> <dbl> <chr>         
1 Green_Roof_Prevent_Flooding    54      6.73     3 0.081 Kruskal-Wallis
wilcox_test(formula = Green_Roof_Prevent_Flooding ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Green_Roof_Preve… 10th … Fashi…    14    14        53 0.03  0.182 ns          
2 Green_Roof_Preve… 10th … Four …    14    24       136 0.313 0.744 ns          
3 Green_Roof_Preve… 10th … Michi…    14     2        20 0.336 0.744 ns          
4 Green_Roof_Preve… Fashi… Four …    14    24       210 0.186 0.744 ns          
5 Green_Roof_Preve… Fashi… Michi…    14     2        25 0.077 0.386 ns          
6 Green_Roof_Preve… Four … Michi…    24     2        37 0.206 0.744 ns          
recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Green_Roof_Habitat, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Green Roof Habitat Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)

recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Green_Roof_Beautify, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Green Roof Beautification Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)


There are statistically significant differences (0.05 alpha level) for two questions related to perceived benefits of green roofs across neighborhoods.

For the Green roofs can increase habitat for native plants and animals question (kw = 8.24, p = 0.041) respondents from the Michie Drive area agreed most strongly while respondents from 10th and Page were most neutral. The Wilcox test did not corroborate this though.

For the Green roofs can enhance the beautification of the landscape question (kw = 9.10, p = 0.028) respondents from the Michie Drive area agreed most strongly while respondents from 10th and Page were most neutral. The Wilcox test confirms a significant difference between 10th and Page responses and those from the Four Seasons Apartments and Townwood Mobile Home Park.



Green Space (e.g., parks and fields)

kbl(
recoded_data %>% 
  group_by(Neighborhood) %>%
  dplyr::select(Parks_Fields_Water_Supplies, Parks_Fields_Recreation, Parks_Fields_Habitat,
                Parks_Fields_Beautify, Parks_Fields_Prevent_Flooding, Neighborhood) %>%
  `colnames<-`(c("Parks_Fields_Water_Supplies", "Parks_Fields_Recreation", "Parks_Fields_Habitat",
                 "Parks_Fields_Beautify", "Parks_Fields_Prevent_Flooding", "Neighborhood")) %>%
  rstatix::get_summary_stats(show = c("min", "max", "mean", "sd")), 
  col.names = c("Neighborhood", "Question", "#", "Min", "Max", "Mean", "Std Dev"),
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F) 
Neighborhood Question # Min Max Mean Std Dev
10th and Page Neighborhood Parks_Fields_Water_Supplies 14 2 5 3.571 0.852
10th and Page Neighborhood Parks_Fields_Recreation 13 2 5 4.000 0.913
10th and Page Neighborhood Parks_Fields_Habitat 13 3 5 4.385 0.768
10th and Page Neighborhood Parks_Fields_Beautify 14 1 5 3.857 1.351
10th and Page Neighborhood Parks_Fields_Prevent_Flooding 14 1 5 3.357 1.082
Fashion Square Mall and Branchlands Area Parks_Fields_Water_Supplies 14 3 5 4.500 0.650
Fashion Square Mall and Branchlands Area Parks_Fields_Recreation 14 3 5 4.500 0.760
Fashion Square Mall and Branchlands Area Parks_Fields_Habitat 14 3 5 4.429 0.756
Fashion Square Mall and Branchlands Area Parks_Fields_Beautify 14 4 5 4.643 0.497
Fashion Square Mall and Branchlands Area Parks_Fields_Prevent_Flooding 14 3 5 4.429 0.756
Four Seasons Apartments and Townwood Mobile Home Park Parks_Fields_Water_Supplies 24 2 5 3.875 0.797
Four Seasons Apartments and Townwood Mobile Home Park Parks_Fields_Recreation 24 2 5 4.083 0.974
Four Seasons Apartments and Townwood Mobile Home Park Parks_Fields_Habitat 24 2 5 4.292 0.859
Four Seasons Apartments and Townwood Mobile Home Park Parks_Fields_Beautify 24 3 5 4.292 0.806
Four Seasons Apartments and Townwood Mobile Home Park Parks_Fields_Prevent_Flooding 24 2 5 3.833 0.868
Michie Drive Subsidized Housing Parks_Fields_Water_Supplies 2 3 3 3.000 0.000
Michie Drive Subsidized Housing Parks_Fields_Recreation 2 4 4 4.000 0.000
Michie Drive Subsidized Housing Parks_Fields_Habitat 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Parks_Fields_Beautify 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Parks_Fields_Prevent_Flooding 2 4 4 4.000 0.000
kruskal_test(data = recoded_data, formula = Parks_Fields_Water_Supplies ~ Neighborhood)
# A tibble: 1 × 6
  .y.                             n statistic    df       p method        
* <chr>                       <int>     <dbl> <int>   <dbl> <chr>         
1 Parks_Fields_Water_Supplies    54      12.0     3 0.00737 Kruskal-Wallis
wilcox_test(formula = Parks_Fields_Water_Supplies ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Parks_Fields_Wat… 10th … Fashi…    14    14      40.5 0.006 0.034 *           
2 Parks_Fields_Wat… 10th … Four …    14    24     132.  0.257 0.514 ns          
3 Parks_Fields_Wat… 10th … Michi…    14     2      20   0.342 0.514 ns          
4 Parks_Fields_Wat… Fashi… Four …    14    24     241   0.018 0.092 ns          
5 Parks_Fields_Wat… Fashi… Michi…    14     2      27   0.03  0.122 ns          
6 Parks_Fields_Wat… Four … Michi…    24     2      40   0.109 0.327 ns          
kruskal_test(data = recoded_data, formula = Parks_Fields_Recreation ~ Neighborhood)
# A tibble: 1 × 6
  .y.                         n statistic    df     p method        
* <chr>                   <int>     <dbl> <int> <dbl> <chr>         
1 Parks_Fields_Recreation    54      3.17     3 0.366 Kruskal-Wallis
wilcox_test(formula = Parks_Fields_Recreation ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Parks_Fields_Rec… 10th … Fashi…    13    14        61 0.12  0.72  ns          
2 Parks_Fields_Rec… 10th … Four …    13    24       145 0.723 1     ns          
3 Parks_Fields_Rec… 10th … Michi…    13     2        14 0.926 1     ns          
4 Parks_Fields_Rec… Fashi… Four …    14    24       209 0.183 0.915 ns          
5 Parks_Fields_Rec… Fashi… Michi…    14     2        21 0.246 0.984 ns          
6 Parks_Fields_Rec… Four … Michi…    24     2        28 0.72  1     ns          
kruskal_test(data = recoded_data, formula = Parks_Fields_Habitat ~ Neighborhood)
# A tibble: 1 × 6
  .y.                      n statistic    df     p method        
* <chr>                <int>     <dbl> <int> <dbl> <chr>         
1 Parks_Fields_Habitat    54     0.218     3 0.975 Kruskal-Wallis
wilcox_test(formula = Parks_Fields_Habitat ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Parks_Fields_Hab… 10th … Fashi…    13    14      88   0.892     1 ns          
2 Parks_Fields_Hab… 10th … Four …    13    24     163   0.82      1 ns          
3 Parks_Fields_Hab… 10th … Michi…    13     2      12.5 1         1 ns          
4 Parks_Fields_Hab… Fashi… Four …    14    24     181   0.676     1 ns          
5 Parks_Fields_Hab… Fashi… Michi…    14     2      14   1         1 ns          
6 Parks_Fields_Hab… Four … Michi…    24     2      22   0.874     1 ns          
kruskal_test(data = recoded_data, formula = Parks_Fields_Beautify ~ Neighborhood)
# A tibble: 1 × 6
  .y.                       n statistic    df     p method        
* <chr>                 <int>     <dbl> <int> <dbl> <chr>         
1 Parks_Fields_Beautify    54      2.91     3 0.405 Kruskal-Wallis
wilcox_test(formula = Parks_Fields_Beautify ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Parks_Fields_Bea… 10th … Fashi…    14    14      67   0.12   0.72 ns          
2 Parks_Fields_Bea… 10th … Four …    14    24     144.  0.454  1    ns          
3 Parks_Fields_Bea… 10th … Michi…    14     2      11   0.673  1    ns          
4 Parks_Fields_Bea… Fashi… Four …    14    24     204.  0.223  1    ns          
5 Parks_Fields_Bea… Fashi… Michi…    14     2      16   0.777  1    ns          
6 Parks_Fields_Bea… Four … Michi…    24     2      21.5 0.834  1    ns          
kruskal_test(data = recoded_data, formula = Parks_Fields_Prevent_Flooding ~ Neighborhood)
# A tibble: 1 × 6
  .y.                               n statistic    df      p method        
* <chr>                         <int>     <dbl> <int>  <dbl> <chr>         
1 Parks_Fields_Prevent_Flooding    54      8.62     3 0.0347 Kruskal-Wallis
wilcox_test(formula = Parks_Fields_Prevent_Flooding ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Parks_Fields_Pre… 10th … Fashi…    14    14       42  0.007 0.045 *           
2 Parks_Fields_Pre… 10th … Four …    14    24      126. 0.191 0.764 ns          
3 Parks_Fields_Pre… 10th … Michi…    14     2        8  0.356 1     ns          
4 Parks_Fields_Pre… Fashi… Four …    14    24      232  0.042 0.21  ns          
5 Parks_Fields_Pre… Fashi… Michi…    14     2       20  0.336 1     ns          
6 Parks_Fields_Pre… Four … Michi…    24     2       21  0.798 1     ns          
recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Parks_Fields_Water_Supplies, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Green Space Water Supplies Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)

recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Parks_Fields_Prevent_Flooding, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Green Space Flood Prevention Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)


There are statistically significant differences (0.05 alpha level) for two questions related to perceived benefits of green space across neighborhoods.

For the Green space such as fields and parks can enhance local water supplies question (kw = 12.0, p = 0.007) respondents from the Fashion Square Mall and Branchlands Area agreed most strongly while respondents from Michie Drive were most neutral. The Wilcox test confirms a significant difference between 10th and Page responses and those from the Fashion Square Mall and Branchlands Area.

For the Green space such as fields and parks can help control stormwater runoff and can help prevent flooding question (kw = 8.62, p = 0.035) respondents from the Fashion Square Mall and Branchlands Area agreed most strongly while respondents from 10th and Page were most neutral. The Wilcox test confirms a significant difference between 10th and Page responses and those from the Fashion Square Mall and Branchlands Area.



Stormwater Retention Ponds

kbl(
recoded_data %>% 
  group_by(Neighborhood) %>%
  dplyr::select(Retention_Ponds_Water_Supplies, Retention_Ponds_Recreation, Retention_Ponds_Habitat,
                Retention_Ponds_Beautify, Retention_Ponds_Prevent_Flooding, Neighborhood) %>%
  `colnames<-`(c("Retention_Ponds_Water_Supplies", "Retention_Ponds_Recreation", "Retention_Ponds_Habitat",
                 "Retention_Ponds_Beautify", "Retention_Ponds_Prevent_Flooding", "Neighborhood")) %>%
  rstatix::get_summary_stats(show = c("min", "max", "mean", "sd")), 
  col.names = c("Neighborhood", "Question", "#", "Min", "Max", "Mean", "Std Dev"),
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F) 
Neighborhood Question # Min Max Mean Std Dev
10th and Page Neighborhood Retention_Ponds_Water_Supplies 14 1 5 3.429 1.158
10th and Page Neighborhood Retention_Ponds_Recreation 14 1 4 3.357 0.929
10th and Page Neighborhood Retention_Ponds_Habitat 14 1 5 3.571 1.222
10th and Page Neighborhood Retention_Ponds_Beautify 14 1 5 3.571 1.158
10th and Page Neighborhood Retention_Ponds_Prevent_Flooding 14 2 5 3.643 0.929
Fashion Square Mall and Branchlands Area Retention_Ponds_Water_Supplies 14 4 5 4.786 0.426
Fashion Square Mall and Branchlands Area Retention_Ponds_Recreation 14 2 5 3.500 0.941
Fashion Square Mall and Branchlands Area Retention_Ponds_Habitat 14 3 5 4.500 0.650
Fashion Square Mall and Branchlands Area Retention_Ponds_Beautify 14 3 5 4.214 0.699
Fashion Square Mall and Branchlands Area Retention_Ponds_Prevent_Flooding 14 4 5 4.786 0.426
Four Seasons Apartments and Townwood Mobile Home Park Retention_Ponds_Water_Supplies 24 3 5 3.833 0.702
Four Seasons Apartments and Townwood Mobile Home Park Retention_Ponds_Recreation 24 2 5 3.708 0.690
Four Seasons Apartments and Townwood Mobile Home Park Retention_Ponds_Habitat 23 3 5 4.087 0.793
Four Seasons Apartments and Townwood Mobile Home Park Retention_Ponds_Beautify 24 3 5 4.125 0.797
Four Seasons Apartments and Townwood Mobile Home Park Retention_Ponds_Prevent_Flooding 24 3 5 4.458 0.721
Michie Drive Subsidized Housing Retention_Ponds_Water_Supplies 2 3 5 4.000 1.414
Michie Drive Subsidized Housing Retention_Ponds_Recreation 2 2 3 2.500 0.707
Michie Drive Subsidized Housing Retention_Ponds_Habitat 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Retention_Ponds_Beautify 2 4 4 4.000 0.000
Michie Drive Subsidized Housing Retention_Ponds_Prevent_Flooding 2 3 5 4.000 1.414
kruskal_test(data = recoded_data, formula = Retention_Ponds_Water_Supplies ~ Neighborhood)
# A tibble: 1 × 6
  .y.                                n statistic    df       p method        
* <chr>                          <int>     <dbl> <int>   <dbl> <chr>         
1 Retention_Ponds_Water_Supplies    54      17.1     3 0.00068 Kruskal-Wallis
wilcox_test(formula = Retention_Ponds_Water_Supplies ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.             group1 group2    n1    n2 statistic       p p.adj p.adj.signif
* <chr>           <chr>  <chr>  <int> <int>     <dbl>   <dbl> <dbl> <chr>       
1 Retention_Pond… 10th … Fashi…    14    14      26   4.16e-4 0.002 **          
2 Retention_Pond… 10th … Four …    14    24     140   3.71e-1 1     ns          
3 Retention_Pond… 10th … Michi…    14     2      10.5 6.21e-1 1     ns          
4 Retention_Pond… Fashi… Four …    14    24     284   1.76e-4 0.001 **          
5 Retention_Pond… Fashi… Michi…    14     2      19.5 2.95e-1 1     ns          
6 Retention_Pond… Four … Michi…    24     2      22   8.76e-1 1     ns          
kruskal_test(data = recoded_data, formula = Retention_Ponds_Recreation ~ Neighborhood)
# A tibble: 1 × 6
  .y.                            n statistic    df     p method        
* <chr>                      <int>     <dbl> <int> <dbl> <chr>         
1 Retention_Ponds_Recreation    54      4.39     3 0.222 Kruskal-Wallis
wilcox_test(formula = Retention_Ponds_Recreation ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Retention_Ponds_… 10th … Fashi…    14    14      95   0.902 0.963 ns          
2 Retention_Ponds_… 10th … Four …    14    24     138.  0.321 0.963 ns          
3 Retention_Ponds_… 10th … Michi…    14     2      22.5 0.167 0.835 ns          
4 Retention_Ponds_… Fashi… Four …    14    24     144.  0.448 0.963 ns          
5 Retention_Ponds_… Fashi… Michi…    14     2      22.5 0.183 0.835 ns          
6 Retention_Ponds_… Four … Michi…    24     2      43   0.049 0.292 ns          
kruskal_test(data = recoded_data, formula = Retention_Ponds_Habitat ~ Neighborhood)
# A tibble: 1 × 6
  .y.                         n statistic    df     p method        
* <chr>                   <int>     <dbl> <int> <dbl> <chr>         
1 Retention_Ponds_Habitat    54      6.00     3 0.111 Kruskal-Wallis
wilcox_test(formula = Retention_Ponds_Habitat ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Retention_Ponds_… 10th … Fashi…    14    14      53   0.03  0.181 ns          
2 Retention_Ponds_… 10th … Four …    14    23     122.  0.211 0.844 ns          
3 Retention_Ponds_… 10th … Michi…    14     2       7.5 0.322 0.966 ns          
4 Retention_Ponds_… Fashi… Four …    14    23     208.  0.12  0.6   ns          
5 Retention_Ponds_… Fashi… Michi…    14     2      14.5 1     1     ns          
6 Retention_Ponds_… Four … Michi…    23     2      16.5 0.521 1     ns          
kruskal_test(data = recoded_data, formula = Retention_Ponds_Beautify ~ Neighborhood)
# A tibble: 1 × 6
  .y.                          n statistic    df     p method        
* <chr>                    <int>     <dbl> <int> <dbl> <chr>         
1 Retention_Ponds_Beautify    54      3.04     3 0.385 Kruskal-Wallis
wilcox_test(formula = Retention_Ponds_Beautify ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Retention_Ponds_… 10th … Fashi…    14    14        66 0.125  0.75 ns          
2 Retention_Ponds_… 10th … Four …    14    24       123 0.156  0.78 ns          
3 Retention_Ponds_… 10th … Michi…    14     2        11 0.675  1    ns          
4 Retention_Ponds_… Fashi… Four …    14    24       177 0.782  1    ns          
5 Retention_Ponds_… Fashi… Michi…    14     2        17 0.656  1    ns          
6 Retention_Ponds_… Four … Michi…    24     2        27 0.797  1    ns          
kruskal_test(data = recoded_data, formula = Retention_Ponds_Prevent_Flooding ~ Neighborhood)
# A tibble: 1 × 6
  .y.                                  n statistic    df       p method        
* <chr>                            <int>     <dbl> <int>   <dbl> <chr>         
1 Retention_Ponds_Prevent_Flooding    54      13.9     3 0.00308 Kruskal-Wallis
wilcox_test(formula = Retention_Ponds_Prevent_Flooding ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.              group1 group2    n1    n2 statistic      p p.adj p.adj.signif
* <chr>            <chr>  <chr>  <int> <int>     <dbl>  <dbl> <dbl> <chr>       
1 Retention_Ponds… 10th … Fashi…    14    14      27.5 0.0005 0.003 **          
2 Retention_Ponds… 10th … Four …    14    24      84   0.007  0.034 *           
3 Retention_Ponds… 10th … Michi…    14     2      11.5 0.737  1     ns          
4 Retention_Ponds… Fashi… Four …    14    24     206.  0.168  0.672 ns          
5 Retention_Ponds… Fashi… Michi…    14     2      19.5 0.295  0.885 ns          
6 Retention_Ponds… Four … Michi…    24     2      29.5 0.587  1     ns          
recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Retention_Ponds_Water_Supplies, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Stormwater Retention Pond Water Supply Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)

recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Retention_Ponds_Prevent_Flooding, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Stormwater Retention Pond Flood Prevention Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)


There are statistically significant differences (0.05 alpha level) for two questions related to perceived benefits of stormwater retention ponds across neighborhoods.

For the Stormwater retention ponds can enhance local water supplies. question (kw = 17.1, p = 0.001) respondents from the Fashion Square Mall and Branchlands Area agreed most strongly while respondents from 10th and Page were most neutral. The Wilcox test confirms a significant difference between 10th and Page responses and those from the Fashion Square Mall and Branchlands Area as well as between the Fashion Square Mall and Branchlands Area and the Four Seasons Apartments and Townwood Mobile Home Park.

For the Stormwater retention ponds can help control stormwater runoff and can help prevent flooding question (kw = 13.9, p = 0.003) respondents from the Fashion Square Mall and Branchlands Area agreed most strongly while respondents from 10th and Page were most neutral. The Wilcox test confirms a significant difference between 10th and Page responses and those from both the Four Seasons Apartments and Townwood Mobile Home Park and the Fashion Square Mall and Branchlands Area.



Tree Planting

kbl(
recoded_data %>% 
  group_by(Neighborhood) %>%
  dplyr::select(Tree_Planting_Water_Supplies, Tree_Planting_Recreation, Tree_Planting_Habitat,
                Tree_Planting_Beautify, Tree_Planting_Prevent_Flooding, Neighborhood) %>%
  `colnames<-`(c("Tree_Planting_Water_Supplies", "Tree_Planting_Recreation", "Tree_Planting_Habitat",
                 "Tree_Planting_Beautify", "Tree_Planting_Prevent_Flooding", "Neighborhood")) %>%
  rstatix::get_summary_stats(show = c("min", "max", "mean", "sd")), 
  col.names = c("Neighborhood", "Question", "#", "Min", "Max", "Mean", "Std Dev"),
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F) 
Neighborhood Question # Min Max Mean Std Dev
10th and Page Neighborhood Tree_Planting_Water_Supplies 14 2 5 3.429 1.016
10th and Page Neighborhood Tree_Planting_Recreation 14 2 5 4.000 0.877
10th and Page Neighborhood Tree_Planting_Habitat 14 3 5 4.286 0.825
10th and Page Neighborhood Tree_Planting_Beautify 14 3 5 4.071 0.829
10th and Page Neighborhood Tree_Planting_Prevent_Flooding 14 2 5 3.714 0.914
Fashion Square Mall and Branchlands Area Tree_Planting_Water_Supplies 14 3 5 4.500 0.650
Fashion Square Mall and Branchlands Area Tree_Planting_Recreation 14 2 5 4.429 0.938
Fashion Square Mall and Branchlands Area Tree_Planting_Habitat 14 3 5 4.714 0.611
Fashion Square Mall and Branchlands Area Tree_Planting_Beautify 13 4 5 4.615 0.506
Fashion Square Mall and Branchlands Area Tree_Planting_Prevent_Flooding 14 3 5 4.429 0.756
Four Seasons Apartments and Townwood Mobile Home Park Tree_Planting_Water_Supplies 24 2 5 4.125 0.850
Four Seasons Apartments and Townwood Mobile Home Park Tree_Planting_Recreation 24 3 5 4.000 0.722
Four Seasons Apartments and Townwood Mobile Home Park Tree_Planting_Habitat 24 3 5 4.583 0.654
Four Seasons Apartments and Townwood Mobile Home Park Tree_Planting_Beautify 24 3 5 4.583 0.654
Four Seasons Apartments and Townwood Mobile Home Park Tree_Planting_Prevent_Flooding 24 3 5 4.333 0.761
Michie Drive Subsidized Housing Tree_Planting_Water_Supplies 2 3 3 3.000 0.000
Michie Drive Subsidized Housing Tree_Planting_Recreation 2 3 3 3.000 0.000
Michie Drive Subsidized Housing Tree_Planting_Habitat 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Tree_Planting_Beautify 2 4 5 4.500 0.707
Michie Drive Subsidized Housing Tree_Planting_Prevent_Flooding 2 3 5 4.000 1.414
kruskal_test(data = recoded_data, formula = Tree_Planting_Water_Supplies ~ Neighborhood)
# A tibble: 1 × 6
  .y.                              n statistic    df       p method        
* <chr>                        <int>     <dbl> <int>   <dbl> <chr>         
1 Tree_Planting_Water_Supplies    54      11.8     3 0.00809 Kruskal-Wallis
wilcox_test(formula = Tree_Planting_Water_Supplies ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Tree_Planting_Wa… 10th … Fashi…    14    14      39.5 0.005 0.03  *           
2 Tree_Planting_Wa… 10th … Four …    14    24     102.  0.039 0.154 ns          
3 Tree_Planting_Wa… 10th … Michi…    14     2      18   0.561 0.561 ns          
4 Tree_Planting_Wa… Fashi… Four …    14    24     209   0.183 0.366 ns          
5 Tree_Planting_Wa… Fashi… Michi…    14     2      27   0.03  0.152 ns          
6 Tree_Planting_Wa… Four … Michi…    24     2      42   0.074 0.223 ns          
kruskal_test(data = recoded_data, formula = Tree_Planting_Recreation ~ Neighborhood)
# A tibble: 1 × 6
  .y.                          n statistic    df      p method        
* <chr>                    <int>     <dbl> <int>  <dbl> <chr>         
1 Tree_Planting_Recreation    54      7.49     3 0.0578 Kruskal-Wallis
wilcox_test(formula = Tree_Planting_Recreation ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Tree_Planting_Re… 10th … Fashi…    14    14        66 0.117 0.327 ns          
2 Tree_Planting_Re… 10th … Four …    14    24       174 0.857 0.857 ns          
3 Tree_Planting_Re… 10th … Michi…    14     2        24 0.109 0.327 ns          
4 Tree_Planting_Re… Fashi… Four …    14    24       228 0.054 0.322 ns          
5 Tree_Planting_Re… Fashi… Michi…    14     2        25 0.064 0.322 ns          
6 Tree_Planting_Re… Four … Michi…    24     2        42 0.07  0.322 ns          
kruskal_test(data = recoded_data, formula = Tree_Planting_Habitat ~ Neighborhood)
# A tibble: 1 × 6
  .y.                       n statistic    df     p method        
* <chr>                 <int>     <dbl> <int> <dbl> <chr>         
1 Tree_Planting_Habitat    54      2.85     3 0.416 Kruskal-Wallis
wilcox_test(formula = Tree_Planting_Habitat ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Tree_Planting_Ha… 10th … Fashi…    14    14      69   0.123 0.738 ns          
2 Tree_Planting_Ha… 10th … Four …    14    24     135   0.259 1     ns          
3 Tree_Planting_Ha… 10th … Michi…    14     2      12.5 0.863 1     ns          
4 Tree_Planting_Ha… Fashi… Four …    14    24     187   0.481 1     ns          
5 Tree_Planting_Ha… Fashi… Michi…    14     2      17.5 0.529 1     ns          
6 Tree_Planting_Ha… Four … Michi…    24     2      27   0.774 1     ns          
kruskal_test(data = recoded_data, formula = Tree_Planting_Beautify ~ Neighborhood)
# A tibble: 1 × 6
  .y.                        n statistic    df     p method        
* <chr>                  <int>     <dbl> <int> <dbl> <chr>         
1 Tree_Planting_Beautify    54      4.92     3 0.178 Kruskal-Wallis
wilcox_test(formula = Tree_Planting_Beautify ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Tree_Planting_Be… 10th … Fashi…    14    13      57.5 0.08  0.399 ns          
2 Tree_Planting_Be… 10th … Four …    14    24     109   0.048 0.29  ns          
3 Tree_Planting_Be… 10th … Michi…    14     2      10   0.554 1     ns          
4 Tree_Planting_Be… Fashi… Four …    13    24     153   0.924 1     ns          
5 Tree_Planting_Be… Fashi… Michi…    13     2      14.5 0.842 1     ns          
6 Tree_Planting_Be… Four … Michi…    24     2      27   0.774 1     ns          
kruskal_test(data = recoded_data, formula = Tree_Planting_Prevent_Flooding ~ Neighborhood)
# A tibble: 1 × 6
  .y.                                n statistic    df     p method        
* <chr>                          <int>     <dbl> <int> <dbl> <chr>         
1 Tree_Planting_Prevent_Flooding    54      5.72     3 0.126 Kruskal-Wallis
wilcox_test(formula = Tree_Planting_Prevent_Flooding ~ Neighborhood, data = recoded_data)
# A tibble: 6 × 9
  .y.               group1 group2    n1    n2 statistic     p p.adj p.adj.signif
* <chr>             <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <chr>       
1 Tree_Planting_Pr… 10th … Fashi…    14    14        55 0.039 0.232 ns          
2 Tree_Planting_Pr… 10th … Four …    14    24       104 0.041 0.232 ns          
3 Tree_Planting_Pr… 10th … Michi…    14     2        12 0.802 1     ns          
4 Tree_Planting_Pr… Fashi… Four …    14    24       180 0.701 1     ns          
5 Tree_Planting_Pr… Fashi… Michi…    14     2        17 0.658 1     ns          
6 Tree_Planting_Pr… Four … Michi…    24     2        28 0.713 1     ns          
recoded_data %>%
  group_by(Neighborhood) %>%
  dplyr::select(Tree_Planting_Water_Supplies, Neighborhood) %>%
  rstatix::get_summary_stats(type = "common") %>%
  ggplot() +
  geom_bar(aes(x = Neighborhood, y = mean, fill = Neighborhood), stat = "identity", alpha = 0.6) +
    scale_fill_manual(name = "",  values = c("#440154FF", "dodgerblue", "#E57200", "#B8DE29FF"), 
                      labels = c("10th and Page \n  Neighborhood", "Fashion Square Mall \n and Branchlands Area",
                               "Four Seasons Apartments \n and Townwood Mobile \n Home Park", 
                               "Michie Drive \n Subsidized Housing")) +
  labs(x = " ", y = "Mean", title =  "Perceptions of Tree Planting Water Supply Benefits", subtitle = "", 
       caption = "Note:  1 = Strongly Disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly Agree") +
  theme_minimal() +
  theme(legend.position="bottom",
        plot.subtitle = element_text(hjust = 0.5), 
        plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.y = element_text(size = 12),
        plot.caption = element_text(size = 9),
        text = element_text(size = 14)) +
  geom_text(aes(label = round(mean, 2), x = Neighborhood, y = mean), vjust = 1.8, color = "white", size = 7)


There are statistically significant differences (0.05 alpha level) for two questions related to perceived benefits of tree planting across neighborhoods.

For the Planting more trees can enhance local water supplies question (kw = 11.8, p = 0.008) respondents from the Fashion Square Mall and Branchlands Area agreed most strongly while respondents from Michie Drive and 10th and Page were most neutral. The Wilcox test confirms a significant difference between 10th and Page responses and those from the Fashion Square Mall and Branchlands Area.


NbS Intervention Preferences

Two questions explore respondents preferences for NbS interventions where they live:

Which type of NbS element would you prefer to see more of in your community?

List any location(s) you think should be prioritized for NbS investments in future?

The responses to these questions are presented below.

prefs_in_order <- c("Green Roofs", "Green Space", "Rain Gardens", "Stormwater Retention Ponds", "Trees")
  
recoded_data %>%
  tabyl(I_Want_More) %>%
  `colnames<-`(c("NbS", "Number", "Percent")) %>%
  ggplot() +
  geom_bar(aes(y = Number, x = factor(NbS, prefs_in_order)), stat="identity", fill = "green4", alpha = 0.85) + 
  scale_x_discrete(labels = c("Green Roofs", "Green Space", "Rain Gardens", "Stormwater Retention Ponds", "Trees"),
                   name = "NbS Intervention") +
  labs(title = "Frequency of Preferred NbS Intervention") +
  theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, size = 16), 
        axis.text.x = element_text(size = 12),
        text = element_text(size = 18)) + 
    geom_text(aes(label = Number, x = NbS, y = Number), vjust = 1.8, color = "white", size = 7)

#  List any location(s) you think should be prioritized for NbS investments

to_drop <- c("N/a", "N/A", "n/a")

nbs_priority_locations <- data_1 %>%
  filter(is.na(`List any location(s) you think should be prioritized for NbS investments in future?`) == FALSE) %>%
  dplyr::select(`List any location(s) you think should be prioritized for NbS investments in future?`, Neighborhood) %>%
  filter(! `List any location(s) you think should be prioritized for NbS investments in future?` %in% to_drop)


kbl(
nbs_priority_locations %>%
  arrange(Neighborhood)
) %>%
  kable_paper(bootstrap_options = "striped", full_width = F)
List any location(s) you think should be prioritized for NbS investments in future? Neighborhood
New Orleans 10th and Page Neighborhood
Prospect Ave 10th and Page Neighborhood
10th & Page neighborhood 10th and Page Neighborhood
Places on UVA grounds around newcomb. The UVA corner always has significant flooding 10th and Page Neighborhood
Branchlands development, where I live, could benefit greatly from a porous pavement. Instead, they "sealcoat" it with a toxic tar far too frequently Fashion Square Mall and Branchlands Area
area around the fashion square mall (where I live) Fashion Square Mall and Branchlands Area
Charlottesville Inner city and new developments Fashion Square Mall and Branchlands Area
If my neighborhood HOA got a grant to put in a rain garden I think a lot of my neighbors would like it. Fashion Square Mall and Branchlands Area
Greenbriar Fashion Square Mall and Branchlands Area
Medical school, North Charlottesville Fashion Square Mall and Branchlands Area
city of Charlottesville Four Seasons Apartments and Townwood Mobile Home Park
Belmont Four Seasons Apartments and Townwood Mobile Home Park
Pond on Hillsdale and Greenbrier and along Meadowcreek Trail via Rivanna Trail Foundation Four Seasons Apartments and Townwood Mobile Home Park
Stonefield Commons and the surrounding highway area Four Seasons Apartments and Townwood Mobile Home Park
Commonwealth/ Four Seasons Four Seasons Apartments and Townwood Mobile Home Park
The commonwealth neighborhood in Charlottesville Four Seasons Apartments and Townwood Mobile Home Park
Many locations in the Rivanna watershed Four Seasons Apartments and Townwood Mobile Home Park
Charlottesville Four Seasons Apartments and Townwood Mobile Home Park
Four Seasons Four Seasons Apartments and Townwood Mobile Home Park
low income communities Four Seasons Apartments and Townwood Mobile Home Park
White House Four Seasons Apartments and Townwood Mobile Home Park
Common area used as play space for kids Four Seasons Apartments and Townwood Mobile Home Park
Four Seasons Four Seasons Apartments and Townwood Mobile Home Park
Charlottesville along the highway 29 corridor north of town is largely blighted. Near my development there are two large parking lots for shopping centers that are mostly or entirely abandoned buildings. No greenery, impermeable surfaces everywhere. Michie Drive Subsidized Housing


The most common desired NbS intervention was rain gardens, followed by stormwater retention ponds and tree planting. The open-ended responses to the question of where those interventions should be made range from very specific (e.g., “Pond on Hillsdale and Greenbrier and along Meadowcreek Trail via Rivanna Trail Foundation” to very vague (e.g., “New Orleans” and “city of Charlottesville”).

Next steps include exploring the polygons drawn by respondents to this survey that show areas that they believe:

  • Are subject to flooding
  • Are exposed to extreme heat
  • Have compromised air quality
  • Have compromised water quality

On a final note—the response rate from the Michie Drive study area has been very low (3/33) at 9.1%. We have email addressed for 10 of these individuals I will write to them directly this week to encourage them to participate.

  • 10th and Page Neighborhood → (15/117) → 12.8%
  • Fashion Square Mall and Branchlands Area → (18/162) → 11.1%
  • Four Seasons Apartments and Townwood Mobile Home Park → (26/150) → 17.3%
  • Michie Drive Subsidized Housing → (3/33) → 9.1%